package com.xszx.controller;

import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.xszx.entity.*;
import com.xszx.service.AdminService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;

import java.util.List;

/**
 * @description:
 * @author:瓦达西瓦
 * @date:2024/10/31
 */
@Controller
@RequestMapping("/admin")
public class AdminController {
    @Autowired
    private AdminService adminService;
    @Autowired
    private LoginController loginController;

    //获取商品列表
    @RequestMapping("/getGoodList")
    @CrossOrigin(origins ="http://localhost:5173")
    @ResponseBody
    public Object getGoodList(String currentpage){
        currentpage=(currentpage==null)?"1":currentpage;
        PageHelper.startPage(Integer.parseInt(currentpage),10);
        List<Goods> list= adminService.getGoodList();
        PageInfo<Goods> pageInfo=new PageInfo<>(list);

//        List<Goods>  list2= pageInfo.getList();
        return pageInfo;
   }

    //获取商品列表
    @RequestMapping("/getGoodsList")
    @CrossOrigin(origins ="http://localhost:5173")
    @ResponseBody
    public Object getGoodsList(){

        List<Goods> list= adminService.getGoodList();

        return list;
    }



   //下架商品
   @RequestMapping("/delGood")
   @CrossOrigin(origins ="http://localhost:5173")
   @ResponseBody
    public Object  delGood(String gid){
       //判断商品是否上架
      Integer t= adminService.Ifadd(Integer.parseInt(gid));
      if(t!=null){
          Integer i= adminService.delGood(Integer.parseInt(gid));
          return 1;
      }
        return 0;//该商品还未上架
    }

   //商品模糊查询
    @RequestMapping("/getGoodMoHuList")
    @CrossOrigin(origins ="http://localhost:5173")
    @ResponseBody
    public Object getGoodMoHuList(Goods goods,
                                  @RequestParam(value = "minAmount",required = false) Double minprice,
                                  @RequestParam("maxAmount") Double maxprice,
                                  @RequestParam("currentPage") int currentpage){
        PageHelper.startPage(currentpage,10);
        List<Goods> list=adminService.getGoodMoHuList(goods,minprice,maxprice);
        PageInfo<Goods> pageInfo=new PageInfo<>(list);
        return pageInfo;
    }
//    //查询待审核的商品
//    @RequestMapping("/getcheckGood")
//    @CrossOrigin(origins ="http://localhost:5173")
//    @ResponseBody
//    public Object getcheckGood(){
//        List<Goods> list= adminService.getcheckGood();
//        return list ;
//    }

    //审核结果
    @RequestMapping("checkGoodResult")
    @CrossOrigin(origins ="http://localhost:5173")
    @ResponseBody
    public void checkGoodResult(Goods goods,Integer p){
       Integer i= adminService.checkGoodResult(goods,p);

    }

    //查询订单列表
    @RequestMapping("/getOrderList")
    @CrossOrigin(origins ="http://localhost:5173")
    @ResponseBody
    public Object getOrderList(String currentpage){

        PageHelper.startPage(Integer.parseInt(currentpage),10);
        List<Order> list= adminService.getOrderList();
        PageInfo<Order> pageInfo=new PageInfo<>(list);

        return pageInfo;
    }

    //订单模糊查询
    @RequestMapping("/getOrderMoHuList")
    @CrossOrigin(origins ="http://localhost:5173")
    @ResponseBody
    public Object getOrderMoHuList(@RequestBody Order order){
        List<Order> list=adminService.getOrderMoHuList(order);
        return list;
    }

   //提交退款
    @RequestMapping("/rtMoney")
    @CrossOrigin(origins ="http://localhost:5173")
    @ResponseBody
    public  Integer rtMoney(@RequestBody Order order){
        //查询订单是否已过退款时间
      Integer t=adminService.checkTime(String.valueOf(order.getOid()));
       if(t!=null){
       Integer i= adminService.rtMoney(order);
       if(i!=null){
           return 1;//提交退款申请成功
       }
   }
       return  2;//退款时间已过

    }

//    //查询退款待审核的列表
//    @RequestMapping("/getrtMoney")
//    @CrossOrigin(origins ="http://localhost:5173")
//    @ResponseBody
//    public Object getrtMoney(){
//        List<Order> list= adminService.getrtMoney();
//        return list ;
//    }


    //审核退款,管理员同意或者不同意退款
    @RequestMapping("/IfrtMoney")
    @CrossOrigin(origins ="http://localhost:5173")
    @ResponseBody
    public  Integer IfrtMoney(Integer oid,Integer rtmoney){
//        同意就返回1，不同意返回0
        Integer i= adminService.IfrtMoney(oid,rtmoney);

             return Integer.valueOf(rtmoney);
    }

  //  查看评论
       @RequestMapping("/getMommentList")
       @CrossOrigin(origins ="http://localhost:5173")
       @ResponseBody
    public Object getMommentList(){
           List<Comments> list= adminService.getMommentList();
           return list;
       }

    //删除评论
    @RequestMapping("/delComment")
    @CrossOrigin(origins ="http://localhost:5173")
    @ResponseBody
    public Integer  delComment(String cid){
        Integer i= adminService.delComment(Integer.parseInt(cid));
        return i;
    }


    //    用户管理
//    获取用户列表
    @RequestMapping("/userlist")
    @CrossOrigin(origins ="http://localhost:5173")
    @ResponseBody
    public Object getUser(User user,
                          @RequestParam("minAmount") Double num1,
                          @RequestParam("maxAmount") Double num2,
                          @RequestParam("currentPage") int currentpage
                          ){
        PageHelper.startPage(currentpage,10);
//        获取用户列表
        List<User> userList= adminService.getUser(user,num1,num2);
        PageInfo<User> pageInfo=new PageInfo<>(userList);
//        返回用户列表
        return pageInfo;
    }
    @RequestMapping("/users")
    @CrossOrigin(origins ="http://localhost:5173")
    @ResponseBody
    public Object getUsers(String currentpage){
        PageHelper.startPage(Integer.parseInt(currentpage),10);
//        获取用户列表
        List<User> userList= adminService.getUsers();
        PageInfo<User> pageInfo=new PageInfo<>(userList);
//        返回用户列表
        return pageInfo;
    }

//    获取用户的总交易额

    //    删除用户（软删除，修改用户账号状态即可）
    @RequestMapping("/delUser")
    @CrossOrigin(origins ="http://localhost:5173")
    @ResponseBody
    public Object delUser(String uid){
//        删除方法
        adminService.delUser(Integer.parseInt(uid));
        adminService.delGoodUser(uid);
        return 1;
    }

    //    用户信息回显
    @RequestMapping("/upUser")
    @CrossOrigin(origins ="http://localhost:5173")
    @ResponseBody
    public Object upUser(String uid){
//        通过uid活得此用户的所有信息
        User user=adminService.upUser(Integer.parseInt(uid));
//        返回修改用户信息界面，只可以修改用户身份和密码
        return user;
    }

    //    修改用户信息
    @RequestMapping("/updateUser")
    @CrossOrigin(origins ="http://localhost:5173")
    @ResponseBody
    public Object updateUser(@RequestBody User user){
//        修改用户信息
        adminService.updateUser(user);
        return 1;
    }

    //    添加用户信息
//    前端调用loginService方法检测登录名是否重复
//    传入用户信息地址最后一级
    @RequestMapping("/addUser")
    @CrossOrigin(origins ="http://localhost:5173")
    @ResponseBody
    public Object addUser(User user,@RequestParam("county") String county){
        System.out.println("用户rid-----------"+user.getRid());
        int i= (int) loginController.getLoginName(user.getLoginname());
        if(i==1){
//        通过se3获取完整的地址信息
            String address=adminService.getAddress(county);
//        为user的uaddress赋值
            user.setUaddress(address);
//        添加用户
            adminService.addUser(user);
            return 1;//添加成功
        }
        return 0;//账号已存在
    }

    //    商品分类管理
//    获取商品分类列表
    @RequestMapping("/goodtypelist")
    @CrossOrigin(origins ="http://localhost:5173")
    @ResponseBody
    public Object getGoodType(){
        List<Goodtype> goodtypes=adminService.getGoodType();
//        返回商品分类列表
        return goodtypes;
    }

    //    判断商品类型是否存在
    @RequestMapping("getGtName")
    @CrossOrigin(origins ="http://localhost:5173")
    @ResponseBody
    public Object getGtName(Goodtype goodtype){
//    在service中比较,获取i的值
        int i=adminService.getGtName(goodtype);
//        i=1,可以添加/修改,i=0,不能添加/修改
        if(i==1){
//            return "可以添加/修改";
            return 1;
        }else {
//            return "当前类型已经存在";
            return 0;
        }
    }

    //    增加商品类型
    @RequestMapping("/addGoodType")
    @CrossOrigin(origins ="http://localhost:5173")
    @ResponseBody
    public Object addGoodtype(@RequestBody Goodtype goodtype){
//       调用方法
        adminService.addGoodType(goodtype);
        return 1;
    }

    //    删除商品类别
    @RequestMapping("/delGoodType")
    @CrossOrigin(origins ="http://localhost:5173")
    @ResponseBody
    public Object delGoodtype(Goodtype goodtype){
        //       调用方法
        adminService.delGoodType(goodtype);
        return 1;
    }

    //    修改商品类别
//    回显
    @RequestMapping("/upGoodType")
    @CrossOrigin(origins ="http://localhost:5173")
    @ResponseBody
    public Object upGoodType(int gtid){
//       通过gtid活得此用户的所有信息
        Goodtype goodtype=adminService.upGoodType(gtid);
//       返回修改用户信息界面，只可以修改用户身份和密码
        return goodtype;
    }

    //    修改
    @RequestMapping("/updateGoodType")
    @CrossOrigin(origins ="http://localhost:5173")
    @ResponseBody
    public Object updateGoodType(Goodtype goodtype){
//        使用方法修改
        adminService.updateGoodType(goodtype);
        return 1;
    }

//    //  查看商户申请列表
//    @RequestMapping("/getMerchant")
//    @CrossOrigin(origins ="http://localhost:5173")
//    @ResponseBody
//    public Object getMerchant(Merchant merchant){
//        List<Merchant> merchants=adminService.getMerchant(merchant);
//        return merchants;
//    }

    //    审核通过
    @RequestMapping("/addMerchant")
    @CrossOrigin(origins ="http://localhost:5173")
    @ResponseBody
    public Object addMerchant(@RequestBody Merchant merchant){


//        修改审核表中的状态
        adminService.addMerchant(merchant);
//        修改用户表中用户的身份
        adminService.upMerchant(merchant);
        return 1;
    }

    //    审核不通过
    @RequestMapping("/delMerchant")
    @CrossOrigin(origins ="http://localhost:5173")
    @ResponseBody
    public Object  delMerchant(@RequestBody Merchant merchant){

//        修改审核表中的状态
        adminService.delMerchant(merchant);
        return 1;
    }

    //    商品审核
//    审核成功
    @RequestMapping("/succeedGoods")
    @CrossOrigin(origins ="http://localhost:5173")
    @ResponseBody
    public Object upStatus(@RequestBody Goods goods){

        adminService.upStatus(goods);
        return 1;
    }
    //    审核失败
    @RequestMapping("/failGoods")
    @CrossOrigin(origins ="http://localhost:5173")
    @ResponseBody
    public Object updateStatus(@RequestBody Goods goods){
        adminService.updateStatus(goods);
        return 1;
    }
    //地址联查
    @RequestMapping("/se1")
    @CrossOrigin(origins ="http://localhost:5173")
    @ResponseBody
    public Object getSe1(){
        List<Glo> glos =  adminService.getSe1();
        return glos;
    }

    @RequestMapping("/se2")
    @CrossOrigin(origins ="http://localhost:5173")
    @ResponseBody
    public Object getSe2(@RequestParam("id") String se1){
        List<Glo> glos =  adminService.getSe2(se1);
        return glos;
    }

    //    收获操作
    @RequestMapping("pay")
    @CrossOrigin(origins ="http://localhost:5173")
    @ResponseBody
    public Object pay(Orders orders){
//        修改订单表中的时间（添加订单结束时间）
        adminService.upRvtime(orders);
//      修改用户表中用户总收入
        adminService.pay(orders);
        return 1;
    }

    //    商品批量审核
//    审核通过
    @RequestMapping("bulkGoodsTrue")
    @CrossOrigin(origins ="http://localhost:5173")
    @ResponseBody
    public Object bulkGoodsTrue(int[] arr){
        for(int a:arr){
            adminService.updateBStatus(a);
        }
        return 1;
    }
    //    审核不通过
    @RequestMapping("bulkGoodsFalse")
    @CrossOrigin(origins ="http://localhost:5173")
    @ResponseBody
    public Object bulkGoodsFlase(int[] arr){
        for(int a:arr){
            adminService.upBStatus(a);
        }
        return 1;
    }

    //    商户批量审核
//    商户批量审核成功
    @RequestMapping("bulkUserTruee")
    @CrossOrigin(origins ="http://localhost:5173")
    @ResponseBody
    public Object bulkUserFlase(int[] arr){
        for(int a:arr){
            adminService.upBUser(a);
        }
        return 1;
    }



}
